Este trabajo forma parte de la integración de los módulos Introducción a la Ciencia de Datos y Ciencia de Datos GeogrÔfica, del posgrado en Big Data e Inteligencia Territorial de FLACSO Argentina.
El objetivo principal del mismo es mostrar distintos aspectos de la situación generada por el COVID-19 en la Ciudad de Buenos Aires, y tiene como base datos abiertos tanto privados como públicos.
La elección del tema se debe a la relevancia que presenta a nivel local, y a la detección de la necesidad de integrar los datos abiertos de un modo que ayude a entender mejor el impacto de la pandemia en el sistema de salud y en el transporte y la movilidad urbana.
Este anƔlisis intenta responder algunas preguntas, como por ejemplo:
¿Qué datos hay disponibles?
¿Se pueden transformar esos datos en información?
-ĀæPueden los datos abiertos ayudarnos a entender mejor la realidad?
Los ejes centrales de este trabajo involucran el flujo de transporte público, la movilidad urbana según estimaciones de Google, los datos de salud de la Ciudad en materia de ocupación de camas, números de casos, Unidades Febriles de Emergencia, y capturas de tweets geolocalizados en la Ciudad y que abordan temas relacionados a la pandemia y la situación de cuarentena.
Antes de empezar, los paquetes que se utilizaron durante todo el proceso son:
library(tidyverse)
library(ggmap)
library(lubridate)
#gganimate, para animar grƔficos que vamos a hacer con ggplot
library(gganimate)
library(transformr)
library(viridis)
library(hrbrthemes)
library(sf)
library(osmdata)
library(leaflet)
library(knitr)
TambiĆ©n se quitó la notación cientĆfica, con esta lĆnea de código:
options(scipen = 999)
SegĆŗn Wikipedia: > Buenos Aires, oficialmente Ciudad Autónoma de Buenos Aires (CABA) o Ciudad de Buenos Aires (tal y como figura en su Constitución), es la capital y ciudad mĆ”s poblada de la RepĆŗblica Argentina. Esta metrópolis es una ciudad autónoma que constituye uno de los 24 distritos, o Ā«jurisdicciones de primer ordenĀ», que conforman el paĆs. Tiene sus propios poderes ejecutivo, legislativo y judicial. EstĆ” situada en la región centro-este del paĆs, sobre la orilla sur del RĆo de la Plata, en la región pampeana. La Ciudad de Buenos Aires fue cedida por la provincia de Buenos Aires para que fuera la capital federal del paĆs; pero en virtud de la Constitución Nacional es una ciudad autónoma. Su tejido urbano se asemeja a un abanico que limita al sur, oeste y norte con la lindante Provincia de Buenos Aires y al este con el RĆo de la Plata. Oficialmente la ciudad se encuentra dividida en 15 comunas que agrupan a 48 barrios.
Ahora, vamos a localizarla en el mapa:
En este apartado se toman los datos del [Google COVID-19 Community Mobility Report] (https://www.gstatic.com/covid19/mobility/2020-08-15_AR_Buenos_Aires_Mobility_Report_es-419.pdf). El reporte contiene información sobre la movilidad en la Ciudad por comunas desde el 15 de febrero hasta el 15 de agosto de 2020.
#comunas_geo
comunas <- st_read('https://bitsandbricks.github.io/data/CABA_comunas.geojson')
## Reading layer `CABA_comunas' from data source `https://bitsandbricks.github.io/data/CABA_comunas.geojson' using driver `GeoJSON'
## Simple feature collection with 15 features and 4 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -58.53152 ymin: -34.70529 xmax: -58.33514 ymax: -34.52754
## CRS: 4326
#movilidad google
movilidad_google <- read.csv("https://www.gstatic.com/covid19/mobility/Global_Mobility_Report.csv?cachebust=56adbfa96dfa23c3")
Renombramos la columna comunas
comunas <- rename(comunas, comuna = comunas)
Seleccionamos y filtramos (dentro del dataset de Google) los datos correspondientes a Argentina
movilidad_google <- movilidad_google %>% filter(country_region_code == "AR")
Manipulamos los datos para que nos resulten mƔs prƔcticos
#vemos quƩ hay dentro de la variable sub_region_1
levels(movilidad_google$sub_region_1)
#filtramos solo la data correspondiente a Buenos Aires
movilidad_google_buenos_aires <- movilidad_google %>% filter(sub_region_1 == "Buenos Aires")
summary(movilidad_google_buenos_aires)
#dejamos fuera las siguientes columnas
movilidad_google_buenos_aires <- select(movilidad_google_buenos_aires, -metro_area, -iso_3166_2_code, -census_fips_code)
#como las comunas en nuestro dataset "comunas" aparecen con nĆŗmeros y en el dataset de Google con comuna + nĆŗmero, vamos a renombrar.
comunas$comuna <- (comunas$comuna = case_when(comunas$comuna == 1 ~ "Comuna 1",
comunas$comuna == 2 ~ "Comuna 2",
comunas$comuna == 3 ~ "Comuna 3",
comunas$comuna == 4 ~ "Comuna 4",
comunas$comuna == 5 ~ "Comuna 5",
comunas$comuna == 6 ~ "Comuna 6",
comunas$comuna == 7 ~ "Comuna 7",
comunas$comuna == 8 ~ "Comuna 8",
comunas$comuna == 9 ~ "Comuna 9",
comunas$comuna == 10 ~ "Comuna 10",
comunas$comuna == 11 ~ "Comuna 11",
comunas$comuna == 12 ~ "Comuna 12",
comunas$comuna == 13 ~ "Comuna 13",
comunas$comuna == 14 ~ "Comuna 14",
comunas$comuna == 15 ~ "Comuna 15"))
#dejamos fuera columnas que no nos interesan
comunas <- select(comunas, -barrios, -perimetro, -area)
#renombramos la columna que contiene las comunas para poder crear un nuevo dataset
movilidad_google_buenos_aires <- movilidad_google_buenos_aires %>% rename(comuna = sub_region_2)
#unimos el dataset con la información de movilidad de google con el de comunas para darle atributos geoespaciales
movilidad_comunas <- inner_join(movilidad_google_buenos_aires, comunas, by = "comuna")
#vamos a borrar el _percent_change_from_baseline de las columnas
movilidad_comunas <- movilidad_comunas %>% rename(
retail_and_recreation = retail_and_recreation_percent_change_from_baseline,
grocery_and_pharmacy = grocery_and_pharmacy_percent_change_from_baseline,
parks = parks_percent_change_from_baseline,
transit_stations = transit_stations_percent_change_from_baseline,
workplaces = workplaces_percent_change_from_baseline,
residential = residential_percent_change_from_baseline)
#definimos la columna date como fecha para poder usar los datos como serie temporal
movilidad_comunas$date <- as_date( movilidad_comunas$date)
Ahora sĆ, vamos a los mapas. Los datos de movilidad de Google estĆ”n determinados por comunas, y acabamos de crear un dataset que a esto le suma la información geo, lo que nos permite llevar todos los datos de movilidad a mapas.
#movilidad en tiendas y lugares de ocio
tiendas_y_ocio <- ggplot(movilidad_comunas) +
geom_sf(data = movilidad_comunas$geometry, aes(fill = movilidad_comunas$retail_and_recreation)) +
transition_time(movilidad_comunas$date) +
scale_fill_distiller(palette = "Spectral") +
labs(title = "Tendencias en la movilidad en tiendas y lugares de ocio - CABA",
subtitle = "Cero es el estandar de normalidad.
Fecha: {(frame_time)}",
x = "",
y = "",
fill = "% variación",
caption = "fuente: Google - COVID-19 Community Mobility Report") +
theme_minimal()
animate(tiendas_y_ocio, fps=1)
supermercados_y_farmacias <- ggplot(movilidad_comunas) +
geom_sf(data = movilidad_comunas$geometry, aes(fill = movilidad_comunas$grocery_and_pharmacy)) +
transition_time(movilidad_comunas$date) +
scale_fill_distiller(palette = "Spectral") +
labs(title = "Tendencias en la movilidad en supermercados
y farmacias - CABA",
subtitle = "Cero es el estandar de normalidad.
Fecha: {(frame_time)}",
x = "",
y = "",
fill = "% variación",
caption = "fuente: Google - COVID-19 Community Mobility Report") +
theme_minimal()
animate(supermercados_y_farmacias, fps=1)
parques <- ggplot(movilidad_comunas) +
geom_sf(data = movilidad_comunas$geometry, aes(fill = movilidad_comunas$parks)) +
transition_time(movilidad_comunas$date) +
scale_fill_distiller(palette = "Spectral") +
labs(title = "Tendencias en la movilidad en parques - CABA",
subtitle = "Cero es el estandar de normalidad.
Fecha: {(frame_time)}",
x = "",
y = "",
fill = "% variación",
caption = "fuente: Google - COVID-19 Community Mobility Report") +
theme_minimal()
animate(parques, fps=1)
estaciones_transporte <- ggplot(movilidad_comunas) +
geom_sf(data = movilidad_comunas$geometry, aes(fill = movilidad_comunas$transit_stations)) +
transition_time(movilidad_comunas$date) +
scale_fill_distiller(palette = "Spectral") +
labs(title = "Tendencias en la movilidad en estaciones de transporte - CABA",
subtitle = "Cero es el estandar de normalidad.
Fecha: {(frame_time)}",
x = "",
y = "",
fill = "% variación",
caption = "fuente: Google - COVID-19 Community Mobility Report") +
theme_minimal()
animate(estaciones_transporte, fps=1)
lugares_trabajo <- ggplot(movilidad_comunas) +
geom_sf(data = movilidad_comunas$geometry, aes(fill = movilidad_comunas$workplaces)) +
transition_time(movilidad_comunas$date) +
scale_fill_distiller(palette = "Spectral") +
labs(title = "Tendencias en la movilidad en lugares de trabajo - CABA",
subtitle = "Cero es el estandar de normalidad.
Fecha: {(frame_time)}",
x = "",
y = "",
fill = "% variación",
caption = "fuente: Google - COVID-19 Community Mobility Report") +
theme_minimal()
animate(lugares_trabajo, fps=1)
#movilidad en zonas residenciales
zonas_residenciales <- ggplot(movilidad_comunas) +
geom_sf(data = movilidad_comunas$geometry, aes(fill = movilidad_comunas$residential)) +
transition_time(movilidad_comunas$date) +
scale_fill_distiller(palette = "Spectral") +
labs(title = "Tendencias en la movilidad en zonas residenciales - CABA",
subtitle = "Cero es el estandar de normalidad.
Fecha: {(frame_time)}",
x = "",
y = "",
fill = "% variación",
caption = "fuente: Google - COVID-19 Community Mobility Report") +
theme_minimal()
animate(zonas_residenciales, fps=1)
En este apartado, se toman los datos sobre casos de Coronavirus en la Ciudad. El objetivo es mostrar la evolución de casos por distritos (desde el gobierno de la ciudad usan una división distinta a la habitual, por barrios o comunas) que tienen estrecha relación con el operativo DetectAR, cuyos centros se encuentran en distintos puntos de la ciudad.
Para conocer la distribución de los operativos en la ciudad, vamos a tomar los siguientes datos:
#datos sobre la ubicación de los operativos detectar en la ciudad
detectar <- st_read('https://cdn.buenosaires.gob.ar/datosabiertos/datasets/salud/operativo-detectar/operativo-detectar.geojson')
#comunas_geo
comunas <- st_read('https://bitsandbricks.github.io/data/CABA_comunas.geojson')
Llevado a un mapa, la representación es la siguiente:
#extraemos de geometry las coordenadas en x e y (llamadas lat y long)
detectar <- detectar %>% mutate(
lat = unlist(map(detectar$geometry, 1)),long=unlist(map(detectar$geometry,2)))
ggplot() +
geom_sf(data = comunas$geometry) +
geom_point(data = detectar, aes(x = lat, y = long, color = comuna)) +
geom_sf_text(data=comunas, aes(label = comunas), size=2.5, colour = "black") +
labs(title = "Mapa de puntos DetectAR",
subtitle = "Ciudad Autónoma de Buenos Aires",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar",
color = "Se encuentra en:") +
theme_minimal()
Como se ve en el mapa, hay cuatro puntos DetectAR en la comuna 4, tres en las comunas 7 y 8, dos en las comunas 1, 2 y 3 y uno en las comunas 2, 5, 6, 9 y 14.
A travƩs de la API de transporte del Gobierno de la Ciudad, se puede acceder a los datos de uso de la tarjeta SUBE.
#datos sobre la SUBE
sube <- read.csv('https://cdn.buenosaires.gob.ar/datosabiertos/datasets/transporte/sube/dataset_viajes_sube.csv')
#vamos a ver quƩ datos hay en el dataset sobre la sube
head(sube)
## TIPO_TRANSPORTE DIA PARCIAL CANTIDAD
## 1 Subte 31MAR2020:00:00:00 False 7521
## 2 Subte 01APR2020:00:00:00 False 21178
## 3 Subte 02APR2020:00:00:00 False 20758
## 4 Subte 03APR2020:00:00:00 False 23545
## 5 Subte 04APR2020:00:00:00 False 12184
## 6 Subte 05APR2020:00:00:00 False 6236
#los datos que tenemos son: tipo de transporte, el dĆa, la variable parcial y la cantidad de pasajerxs
str(sube)
## 'data.frame': 558 obs. of 4 variables:
## $ TIPO_TRANSPORTE: Factor w/ 3 levels "Colectivo","Subte",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ DIA : Factor w/ 186 levels "01APR2020:00:00:00",..: 185 1 8 15 21 27 33 39 45 51 ...
## $ PARCIAL : Factor w/ 2 levels "False","True": 1 1 1 1 1 1 1 1 1 1 ...
## $ CANTIDAD : int 7521 21178 20758 23545 12184 6236 25029 25036 26187 18945 ...
#transformamos el formato de las fechas a dĆa-mes-aƱo-horas:minutos:segundos
sube <- sube %>% mutate(DIA = dmy_hms(DIA))
#ahora vamos a cambiar los nombres para que la variable DIA (que contiene las fechas) se llame FECHA
sube$FECHA <- sube$DIA
#tomamos las fechas y las transformamos en una nueva variable. vamos a llamarla DIA, y vamos a asignarle un nĆŗmero segĆŗn quĆ© dĆa de la semana es cada una de esas fechas
sube$DIA <- wday(sube$FECHA)
#vamos a asignar a crear una columna llamada SEMANA, que va a tener la información de a quĆ© semana corresponde cada dĆa
sube$SEMANA <- week(sube$FECHA)
#ahora transformamos los nĆŗmeros en dĆas, para eso:
sube$DIA <- (sube$DIA = case_when(sube$DIA == 2 ~ "LUNES",
sube$DIA == 3 ~ "MARTES",
sube$DIA == 4 ~ "MIĆRCOLES",
sube$DIA == 5 ~ "JUEVES",
sube$DIA == 6 ~ "VIERNES",
sube$DIA == 7 ~ "SĆBADO",
sube$DIA == 1 ~ "DOMINGO"))
#extraemos el nĆŗmero del mes al que corresponde cada fecha
sube$N_MES <- month(sube$FECHA)
#asignamos a cada nĆŗmero de mes el mes correspondiente
sube$N_MES <- (sube$N_MES = case_when(sube$N_MES == 3 ~ "MARZO",
sube$N_MES == 4 ~ "ABRIL",
sube$N_MES == 5 ~ "MAYO",
sube$N_MES == 6 ~ "JUNIO",
sube$N_MES == 7 ~ "JULIO",
sube$N_MES == 8 ~ "AGOSTO",
sube$N_MES == 9 ~ "SEPTIEMBRE",
sube$N_MES == 10 ~ "OCTUBRE",
sube$N_MES == 11 ~ "NOVIEMBRE",
sube$N_MES == 12 ~ "DICIEMBRE"))
#extraemos a quĆ© dĆa del mes corresponde cada fecha
sube$N_DIA <- day(sube$FECHA)
Como no vamos a usar la fila PARCIAL, vamos a dejarla fuera del dataset
sube <- select(sube, -PARCIAL)
head(sube, n=10)
## TIPO_TRANSPORTE DIA CANTIDAD FECHA SEMANA N_MES N_DIA
## 1 Subte MARTES 7521 2020-03-31 13 MARZO 31
## 2 Subte MIĆRCOLES 21178 2020-04-01 14 ABRIL 1
## 3 Subte JUEVES 20758 2020-04-02 14 ABRIL 2
## 4 Subte VIERNES 23545 2020-04-03 14 ABRIL 3
## 5 Subte SĆBADO 12184 2020-04-04 14 ABRIL 4
## 6 Subte DOMINGO 6236 2020-04-05 14 ABRIL 5
## 7 Subte LUNES 25029 2020-04-06 14 ABRIL 6
## 8 Subte MARTES 25036 2020-04-07 14 ABRIL 7
## 9 Subte MIĆRCOLES 26187 2020-04-08 15 ABRIL 8
## 10 Subte JUEVES 18945 2020-04-09 15 ABRIL 9
Vamos a graficar el uso del transporte pĆŗblico por dĆa (y su evolución por semana) en CABA.
ggplot(data = sube, aes(x = factor(DIA, levels=c("LUNES", "MARTES", "MIĆRCOLES", "JUEVES", "VIERNES", "SĆBADO", "DOMINGO")), y = CANTIDAD)) +
geom_bar(stat='identity', aes(fill = TIPO_TRANSPORTE)) +
transition_time(SEMANA) +
labs(title = "Uso de transporte pĆŗblico durante la pandemia
semana: {as.integer(frame_time)}",
subtitle = "Ciudad Autónoma de Buenos Aires",
x = "DĆa",
y = "Usuarixs",
caption = "fuente: data.buenosaires.gob.ar",
color = "Transporte:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
Tal como se puede observar en el grĆ”fico, la semanas 9 y 10 el uso de la tarjeta alcanza valores superiores a los seis millones por dĆa, mientras que automĆ”ticamente despuĆ©s (es decir cuando se declara la cuarentena), esos niveles caen debajo del millón y no vuelven a superar los dos millones.
Si lo vemos en un grĆ”fico estĆ”tico, por dĆa, queda asĆ:
ggplot(sube, aes(x = FECHA, y = CANTIDAD, color = TIPO_TRANSPORTE)) +
geom_line() +
geom_point() +
labs(title = "Uso de transporte pĆŗblico durante la pandemia",
subtitle = "Ciudad Autónoma de Buenos Aires",
x = "",
y = "Usuarixs",
caption = "fuente: data.buenosaires.gob.ar",
color = "Transporte:") +
scale_color_viridis(discrete=TRUE) +
theme_minimal() +
theme(legend.position = "bottom")
Tal como se puede observar, el nĆŗmero de usuarixs del transporte pĆŗblico en la ciudad cae cuando se declara la cuarentena, y se mantiene casi constante con el avance del tiempo. Los puntos mĆnimos se corresponden a los fines de semana y/o dĆas feriados.
Vamos a quedarnos con las fechas desde el comienzo de la cuarentena para poder visualizar mejor cómo se dio el cambio desde el 20 de marzo (fecha en la que comenzó la cuarentena) hasta hoy. Para eso:
sube$FECHA <- as_date(sube$FECHA)
sube_cuarentena <- sube %>% filter(FECHA > "2020-03-20")
Si lo vemos en un grĆ”fico de barras, por dĆa, queda asĆ:
ggplot(sube_cuarentena, aes(x = FECHA, y = CANTIDAD, fill = TIPO_TRANSPORTE)) +
geom_col() +
labs(title = "Uso de transporte pĆŗblico durante la pandemia",
subtitle = "Ciudad Autónoma de Buenos Aires",
x = "",
y = "Usuarixs",
caption = "fuente: data.buenosaires.gob.ar",
fill = "Transporte:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
Como se puede observar, en este grĆ”fico se nota de manera mĆ”s clara la variación en el uso de la sube desde que empezó la cuarentena. Desde mi punto de vista, hay dos fase: la primera va desde fines de marzo hasta fines de junio, en la cual tanto al inicio como al final se encuentran valores mĆnimos en relación con el resto del periodo. Por otro lado, luego de la fase de descenso en el uso de la SUBE que se da entre mediados de junio y los primeros dĆas de julio, comienza un incremento gradual (que hasta el momento parece sostenido).
Los datos relacionados con el flujo vehicular brindan información sobre ingresos, egresos y circulación interna en la ciudad. Al momento de analizar los datos, encontré valores que llamaron mi atención y decidà consultar a gente del gobierno de la ciudad para entender si se trataba de un error o si esos valores eran en realidad normales. Me confirmaron que hubo irregularidades en los sensores durante el mes de marzo. En consecuencia, los datos sobre el flujo vehicular no van a ser considerados.
En este apartado vamos a trabajar con los reportes diarios de casos de COVID-19 del inisterio de Salud de la Ciudad de Buenos Aires.
#descargamos los datos sobre los reportes diarios de COVID-19 de la Ciudad de Buenos Aires
reporte_covid <- read.csv('https://cdn.buenosaires.gob.ar/datosabiertos/datasets/salud/reporte-covid/dataset_reporte_covid_sitio_gobierno.csv')
#Transformamos la variable FECHA en fecha
reporte_covid <- reporte_covid %>%
mutate(FECHA = dmy_hms(FECHA))
#vemos el dataset
head(reporte_covid)
## FECHA TIPO_REPORTE
## 1 2020-07-02 reporte_prensa
## 2 2020-07-03 reporte_prensa
## 3 2020-07-04 reporte_prensa
## 4 2020-07-05 reporte_prensa
## 5 2020-07-06 reporte_prensa
## 6 2020-07-07 reporte_prensa
## TIPO_DATO
## 1 plan_detectar_total_barrios_vulnerables_detectar_movil
## 2 plan_detectar_total_barrios_vulnerables_detectar_movil
## 3 plan_detectar_total_barrios_vulnerables_detectar_movil
## 4 plan_detectar_total_barrios_vulnerables_detectar_movil
## 5 plan_detectar_total_barrios_vulnerables_detectar_movil
## 6 plan_detectar_total_barrios_vulnerables_detectar_movil
## SUBTIPO_DATO VALOR FECHA_PROCESO ID_CARGA
## 1 total_casos_confirmados_plan_detectar 8704 02SEP2020:00:00:00 1515368
## 2 total_casos_confirmados_plan_detectar 9063 02SEP2020:00:00:00 1515368
## 3 total_casos_confirmados_plan_detectar 9340 02SEP2020:00:00:00 1515368
## 4 total_casos_confirmados_plan_detectar 9453 02SEP2020:00:00:00 1515368
## 5 total_casos_confirmados_plan_detectar 9635 02SEP2020:00:00:00 1515368
## 6 total_casos_confirmados_plan_detectar 9865 02SEP2020:00:00:00 1515368
Dentro de los datos disponibles, encontramos la cantidad de hisopados correspondientes a los operativos del Plan DetectAR en distintos barrios y puntos de la ciudad, y el nĆŗmero acumulado de hisopados cada cien mil habitantes.
#vamos a seleccionar los datos correspondientes a hisopados en los distintos barrios y puntos de la ciudad y a crear un nuevo dataset
hisopados <- reporte_covid %>%
filter(SUBTIPO_DATO == "hisopados_barrio_1-11-14" | SUBTIPO_DATO == "hisopados_barrio_15" |
SUBTIPO_DATO == "hisopados_barrio_20" | SUBTIPO_DATO == "hisopados_barrio_21-24" |
SUBTIPO_DATO == "hisopados_barrio_31" | SUBTIPO_DATO == "hisopados_barrio_almagro" |
SUBTIPO_DATO == "hisopados_barrio_balvanera" | SUBTIPO_DATO == "hisopados_barrio_barracas" |
SUBTIPO_DATO == "hisopados_barrio_carrillo" | SUBTIPO_DATO == "hisopados_barrio_constitucion" |
SUBTIPO_DATO == "hisopados_barrio_flores" | SUBTIPO_DATO == "hisopados_barrio_la_boca" |
SUBTIPO_DATO == "hisopados_barrio_palermo" | SUBTIPO_DATO == "hisopados_belgrano" |
SUBTIPO_DATO == "hisopados_boedo" | SUBTIPO_DATO == "hisopados_caballito" |
SUBTIPO_DATO == "hisopados_chacarita" | SUBTIPO_DATO == "hisopados_coghlan" |
SUBTIPO_DATO == "hisopados_la_paternal" | SUBTIPO_DATO == "hisopados_mataderos" |
SUBTIPO_DATO == "hisopados_nunez" | SUBTIPO_DATO == "hisopados_parque_avellaneda" |
SUBTIPO_DATO == "hisopados_parque_chacabuco" | SUBTIPO_DATO == "hisopados_parque_patricios" |
SUBTIPO_DATO == "hisopados_pompeya" | SUBTIPO_DATO == "hisopados_recoleta" |
SUBTIPO_DATO == "hisopados_rodrigo_bueno" | SUBTIPO_DATO == "hisopados_saavedra" |
SUBTIPO_DATO == "hisopados_san_cristobal" | SUBTIPO_DATO == "hisopados_san_telmo" |
SUBTIPO_DATO == "hisopados_soldati" | SUBTIPO_DATO == "hisopados_villa_crespo" |
SUBTIPO_DATO == "hisopados_villa_ortuzar" | SUBTIPO_DATO == "hisopados_villa_riachuelo_-_lugano" |
SUBTIPO_DATO == "hisopados_villa_urquiza")
Ahora vamos a ver quƩ datos tenemos en este nuevo dataset llamado hisopados.
summary(hisopados)
## FECHA TIPO_REPORTE
## Min. :2020-07-01 00:00:00 reporte_prensa:1859
## 1st Qu.:2020-07-21 00:00:00
## Median :2020-08-07 00:00:00
## Mean :2020-08-04 20:34:43
## 3rd Qu.:2020-08-20 00:00:00
## Max. :2020-09-02 00:00:00
##
## TIPO_DATO SUBTIPO_DATO VALOR
## plan_detectar_movil :1413 hisopados_barrio_1-11-14: 64 Min. : 2
## plan_detectar_bv : 446 hisopados_barrio_15 : 64 1st Qu.: 202
## barrios_vulnerables : 0 hisopados_barrio_20 : 64 Median : 506
## casos_no_residentes : 0 hisopados_barrio_21-24 : 64 Mean : 1430
## casos_por_grupo_etario: 0 hisopados_barrio_31 : 64 3rd Qu.: 1255
## casos_residentes : 0 hisopados_barrio_almagro: 64 Max. :12188
## (Other) : 0 (Other) :1475
## FECHA_PROCESO ID_CARGA
## 02SEP2020:00:00:00:1859 Min. :1515368
## 1st Qu.:1515368
## Median :1515368
## Mean :1515368
## 3rd Qu.:1515368
## Max. :1515368
##
Como se puede observar, los datos comienzan el primero de julio de 2020. Vamos a hacer un plot para ver cómo fue la evolución de testeos acumulados en cada zona de detección.
ggplot(hisopados) +
geom_line(aes(x = FECHA, y = VALOR)) +
facet_wrap(~SUBTIPO_DATO, ncol = 4) +
labs(title = "Hisopados",
subtitle = "Ciudad Autónoma de Buenos Aires",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal()
Dentro del dataset de reportes sobre Coronavirus, encontramos tambiƩn la cantidad (acumulada) de personas hisopadas cada cien mil habitantes a lo largo del tiempo. Vamos a crear un nuevo dataset filtrando estos datos.
hisopados_100000 <- filter(reporte_covid, SUBTIPO_DATO == "tasa_personas_hisopadas_c_100_000_hab")
Si lo llevamos a un grƔfico:
ggplot(hisopados_100000, aes(x = FECHA, y = VALOR)) +
geom_line() +
geom_point() +
labs(title = "Hisopados acumulados cada 100.000 habitantes",
subtitle = "CABA - Covid-19",
x = "",
y = "Hisopados cada 100.000 habitantes",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal() +
theme(legend.position = "bottom")
Con estos datos, vamos a calcular la cantidad de hisopados cada cien mil habitantes por dĆa:
hisopados_100000 <- hisopados_100000 %>%
arrange(FECHA) %>%
mutate(VALOR_DIA = VALOR - lag(VALOR, default = first(VALOR)))
#Para evitar que el primer valor sea cero, vamos a dejar fuera el primer dĆa
hisopados_100000$FECHA <- as_date(hisopados_100000$FECHA)
hisopados_100000 <- hisopados_100000 %>% filter(FECHA > "2020-07-09")
ggplot(hisopados_100000, aes(x = FECHA, y = VALOR_DIA)) +
geom_line() +
geom_point() +
labs(title = "Hisopados cada 100.000 habitantes por dĆa",
subtitle = "CABA - Covid-19",
x = "",
y = "Hisopados cada 100.000 habitantes/dĆa",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal() +
theme(legend.position = "bottom")
Tal como se puede observar, el nĆŗmero de hisopados cada mil habitantes cae cada 4 o 5 dĆas por 2 o 3 dĆas, sube y vuelve a caer, y asĆ. A veces los puntos mĆnimos coinciden con el fin de semana, pero no siempre.
# calculamos los estadĆsticos
summary(hisopados_100000$VALOR_DIA)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 49.00 74.50 90.00 88.44 101.00 133.00
El mĆnimo de hisopados cada cien mil habitantes por dĆa en CABA (hasta el momento) es de 49, mientras que el mĆ”ximo es de 133. Por su parte, el promedio de hisopados cada cien mil habitantes por dĆa es de 88.
Como la cantidad de hisopados aparece cada cien mil habitantes, vamos a calcular el nĆŗmero de personas hisopadas cada cien. Esto permitirĆ” ver el avances del porcentaje de hisopados.
hisopados_porcentaje <- hisopados_100000 %>% mutate(VALOR_PORCENTUAL = (VALOR)/1000)
Y lo llevamos a un grƔfico:
ggplot(hisopados_porcentaje, aes(x = FECHA, y = VALOR_PORCENTUAL)) +
geom_line() +
geom_point() +
labs(title = "Porcentaje de personas hisopadas (acumulado)",
subtitle = "CABA - Covid-19",
x = "",
y = "%",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal() +
theme(legend.position = "bottom")
Uno de los datos disponibles es el porcentaje de positividad por dĆa en la Ciudad de Buenos Aires. Vamos a filtrar esos datos y a graficar para ver la evolución del porcentaje de positividad.
porcentaje_positividad_dia <- filter(
reporte_covid, SUBTIPO_DATO =="%_positividad_personas_hisopadas_reportados_del_dia_caba")
ggplot(porcentaje_positividad_dia, aes(x = FECHA, y = VALOR)) +
geom_line() +
geom_point() +
labs(title = "Porcentaje de positividad de personas hisopadas",
subtitle = "CABA - Covid-19",
x = "",
y = "% positividad",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal() +
theme(legend.position = "bottom")
Como se puede observar, el porcentaje de positividad en hisopados oscila casi constantemente en un rango aproximado de veinte puntos porcentuales.
Para explicar la diferencia entre los test rÔpidos y PCR se consultó el sitio [Gaceta Médica] (https://gacetamedica.com/investigacion/como-funcionan-y-en-que-se-diferencian-las-pcr-y-los-test-rapidos-de-coronavirus/).
Las PCR (siglas en inglĆ©s de āReacción en Cadena de la Polimersaā), son un tipo de pruebas de diagnóstico que se llevan utilizando durante aƱos en diferentes crisis de salud pĆŗblica relacionadas con enfermedades infecciosas. Los test rĆ”pidos se han incorporado recientemente y, como su nombre indica, son mĆ”s rĆ”pidos y sencillos. Ambos sirven para comprobar si una persona estĆ” infectada o no por el Covid-19. Al realizar una prueba de diagnóstico mediante PCR, lo que permite detectar es un fragmento del material genĆ©tico de un patógeno o microorganismo. La PCR, se basa en las caracterĆsticas de estabilidad al calor de una enzima polimerasa. Tras el anĆ”lisis en un laboratorio de MicrobiologĆa de una muestra respiratoria de una persona sospechosa de estar infectada, si la prueba detecta ARN del virus, el resultado es positivo. AsĆ, se sabrĆa que ese paciente tiene Covid-19. En cambio, si la tĆ©cnica de PCR no detecta el material genĆ©tico del virus, la persona no estarĆa infectada. A diferencia de la PCR, los test rĆ”pidos no identifican el ARN del virus, sino que usan dos mĆ©todos distintos: - A travĆ©s de una muestra de sangre, son capaces de detectar anticuerpos producidos frente al virus. - A travĆ©s de muestras respiratorias de exudado nasofarĆngeo, pueden detectar proteĆnas del virus. Estos test se basan en una inmunocromatografĆa en papel, es decir, una plataforma que tiene āpegadasā las proteĆnas del virus para detectar anticuerpos o anticuerpos especĆficos para descubrir las proteĆnas del virus.
Ahora vamos a seleccionar los datos correspondientes a información relacionada con los test rÔpidos y con PCR.
#test rĆ”pidos positivos por dĆa
test_rapidos_positivos_dia <- filter(
reporte_covid, SUBTIPO_DATO == "tr_realizados_positivos_reportados_del_dia")
#renombramos
test_rapidos_positivos_dia$TIPO_DATO <- (test_rapidos_positivos_dia$TIPO_DATO = case_when(
test_rapidos_positivos_dia$TIPO_DATO == "tr_en_centros_de_salud_hospitales_cesacs_cemar_e_irep" ~ "salud",
test_rapidos_positivos_dia$TIPO_DATO == "tr_en_fuerzas_de_seguridad_insituto_de_cadetes_transporte_y_carga_manual_policia" ~ "fuerzas_de_seguridad",
test_rapidos_positivos_dia$TIPO_DATO == "tr_en_geriatricos" ~ "geriatricos"))
#dejamos fuera columnas que no necesitamos de momento
test_rapidos_positivos_dia <- select(test_rapidos_positivos_dia, -TIPO_REPORTE, -FECHA_PROCESO, -ID_CARGA)
#test rƔpidos positivos acumulados
test_rapidos_positivos_acumulados <- filter(
reporte_covid, SUBTIPO_DATO == "tr_realizados_acumulados_positivos")
#renombramos
test_rapidos_positivos_acumulados$TIPO_DATO <- (test_rapidos_positivos_acumulados$TIPO_DATO = case_when(
test_rapidos_positivos_acumulados$TIPO_DATO == "tr_en_centros_de_salud_hospitales_cesacs_cemar_e_irep" ~ "salud",
test_rapidos_positivos_acumulados$TIPO_DATO == "tr_en_fuerzas_de_seguridad_insituto_de_cadetes_transporte_y_carga_manual_policia" ~ "fuerzas_de_seguridad",
test_rapidos_positivos_acumulados$TIPO_DATO == "tr_en_geriatricos" ~ "geriatricos"))
#dejamos fuera columnas que no necesitamos de momento
test_rapidos_positivos_acumulados <- select(test_rapidos_positivos_acumulados, -TIPO_REPORTE, -FECHA_PROCESO, -ID_CARGA)
#pcr positivos por dĆa
pcr_positivos_dia <- filter(
reporte_covid, SUBTIPO_DATO == "pcr_realizados_positivos_reportados_del_dia")
#renombramos
pcr_positivos_dia$TIPO_DATO <- (pcr_positivos_dia$TIPO_DATO = case_when(
pcr_positivos_dia$TIPO_DATO == "tr_en_centros_de_salud_hospitales_cesacs_cemar_e_irep" ~ "salud",
pcr_positivos_dia$TIPO_DATO == "tr_en_fuerzas_de_seguridad_insituto_de_cadetes_transporte_y_carga_manual_policia" ~ "fuerzas_de_seguridad",
pcr_positivos_dia$TIPO_DATO == "tr_en_geriatricos" ~ "geriatricos"))
#dejamos fuera columnas que no necesitamos de momento
pcr_positivos_dia <- select(pcr_positivos_dia, -FECHA_PROCESO, -ID_CARGA)
#pcr positivos acumulados
pcr_positivos_acumulados <- filter(
reporte_covid, SUBTIPO_DATO == "pcr_realizados_positivos")
#renombramos
pcr_positivos_acumulados$TIPO_DATO <- (pcr_positivos_acumulados$TIPO_DATO = case_when(
pcr_positivos_acumulados$TIPO_DATO == "tr_en_centros_de_salud_hospitales_cesacs_cemar_e_irep" ~ "salud",
pcr_positivos_acumulados$TIPO_DATO == "tr_en_fuerzas_de_seguridad_insituto_de_cadetes_transporte_y_carga_manual_policia" ~ "fuerzas_de_seguridad",
pcr_positivos_acumulados$TIPO_DATO == "tr_en_geriatricos" ~ "geriatricos"))
#dejamos fuera columnas que no necesitamos de momento
pcr_positivos_acumulados <- select(pcr_positivos_acumulados, -FECHA_PROCESO, -ID_CARGA)
summary(test_rapidos_positivos_dia)
## FECHA TIPO_DATO
## Min. :2020-07-01 00:00:00 Length:169
## 1st Qu.:2020-07-22 00:00:00 Class :character
## Median :2020-08-05 00:00:00 Mode :character
## Mean :2020-08-04 06:57:30
## 3rd Qu.:2020-08-19 00:00:00
## Max. :2020-09-02 00:00:00
##
## SUBTIPO_DATO VALOR
## tr_realizados_positivos_reportados_del_dia :169 Min. : 0.00
## %_fallecidos_positivos_mayores_a_60_anos : 0 1st Qu.: 24.00
## %_letalidad_acumulada : 0 Median : 48.00
## %_positividad_personas_hisopadas_acumulada_caba : 0 Mean : 78.49
## %_positividad_personas_hisopadas_acumulada_no_caba : 0 3rd Qu.:111.00
## %_positividad_personas_hisopadas_acumulados_totales: 0 Max. :577.00
## (Other) : 0
ggplot(test_rapidos_positivos_dia, aes(x = FECHA, y = VALOR, fill = TIPO_DATO)) +
geom_col() +
labs(title = "Test RĆ”pidos positivos por dĆa",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar",
fill = "Test positivos en:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
Respecto a lo que se puede observar en el grĆ”fico: el nĆŗmero de test rĆ”pidos positivos cae considerablamente cada 4 o 5 dĆas por un perĆodo de 2 o 3, vuelve a la normalida, cae y asĆ. ĀæPor quĆ©? La explicación que encuentro es que los valores mĆnimos corresponden a dĆas del fin de semana y a feriados. ĀæPuede ser que se testee menos esos dĆas? Es probable, pero no tengo certezas. Por otro lado, los resultados de test rĆ”pidos positivos en las fuerzas de seguridad estĆ”n disponible reciĆ©n desde el 24 de julio. Si vamos a los valores acumulados:
ggplot(test_rapidos_positivos_acumulados, aes(x = FECHA, y = VALOR, fill = TIPO_DATO)) +
geom_col() +
labs(title = "Test RƔpidos positivos acumulados",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar",
fill = "Test positivos en:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
Creo que en este apartado no hay mucho que decir porque la imagen es clara. El aumento de casos positivos (acumulados) detectados con test rƔpidos es progresivo y constante. Ahora bien, vamos a los PCR:
ggplot(pcr_positivos_dia, aes(x = FECHA, y = VALOR, fill = TIPO_DATO)) +
geom_col() +
labs(title = "PCR positivos por dĆa",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar",
fill = "PCR en:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
summary(pcr_positivos_dia$VALOR)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 11.00 21.00 25.29 33.00 205.00
El 17 de julio se detectaron 205 casos positivos a través de la técnica PCR en geriÔtricos, es por eso que el valor contrasta con el resto y es el valor mÔximo. Ahora, vamos a ver el acumulado para conocer la evolución en el tiempo:
ggplot(pcr_positivos_acumulados, aes(x = FECHA, y = VALOR, fill = TIPO_DATO)) +
geom_col() +
labs(title = "PCR positivos acumulados",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar",
fill = "PCR en:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
El aumento de casos positivos (acumulados) detectados con la tƩcnica PCR, tal como pasa con los test rƔpidos, es progresivo y constante.
En este apartado vamos a ver el nĆŗmero total de casos de COVID-19 confirmados
#filtramos los casos confirmados por barrios y/o sectores de la ciudad
casos_confirmados_loc <- reporte_covid %>%
filter(SUBTIPO_DATO == "casos_confirmados_almagro" | SUBTIPO_DATO == "casos_confirmados_balvanera" |
SUBTIPO_DATO == "casos_confirmados_barracas" | SUBTIPO_DATO == "casos_confirmados_barrio_1-11-14" |
SUBTIPO_DATO == "casos_confirmados_barrio_15" | SUBTIPO_DATO == "casos_confirmados_barrio_20" |
SUBTIPO_DATO == "casos_confirmados_barrio_21-24" | SUBTIPO_DATO == "casos_confirmados_barrio_31" |
SUBTIPO_DATO == "casos_confirmados_barrio_carrillo" | SUBTIPO_DATO == "casos_confirmados_belgrano" |
SUBTIPO_DATO == "casos_confirmados_boedo" | SUBTIPO_DATO == "casos_confirmados_chacarita" |
SUBTIPO_DATO == "casos_confirmados_coghlan" | SUBTIPO_DATO == "casos_confirmados_constitucion" |
SUBTIPO_DATO == "casos_confirmados_flores" | SUBTIPO_DATO == "casos_confirmados_la_boca" |
SUBTIPO_DATO == "casos_confirmados_la_paternal" | SUBTIPO_DATO == "casos_confirmados_mataderos" |
SUBTIPO_DATO == "casos_confirmados_nunez" | SUBTIPO_DATO == "casos_confirmados_palermo" |
SUBTIPO_DATO == "casos_confirmados_parque_avellaneda" | SUBTIPO_DATO == "casos_confirmados_parque_chacabuco" |
SUBTIPO_DATO == "casos_confirmados_parque_patricios" | SUBTIPO_DATO == "casos_confirmados_pompeya" |
SUBTIPO_DATO == "casos_confirmados_recoleta" | SUBTIPO_DATO == "casos_confirmados_rodrigo_bueno" |
SUBTIPO_DATO == "casos_confirmados_saavedra" | SUBTIPO_DATO == "casos_confirmados_san_cristobal" |
SUBTIPO_DATO == "casos_confirmados_san_telmo" | SUBTIPO_DATO == "casos_confirmados_soldati" |
SUBTIPO_DATO == "casos_confirmados_villa_crespo" | SUBTIPO_DATO == "casos_confirmados_villa_ortuzar" |
SUBTIPO_DATO == "casos_confirmados_villa_riachuelo_-_lugano" | SUBTIPO_DATO == "casos_confirmados_villa_urquiza")
Llevamos los datos a grƔficos:
ggplot(casos_confirmados_loc) +
geom_line(aes(x = FECHA, y = VALOR)) +
facet_wrap(~SUBTIPO_DATO, ncol = 4) +
labs(title = "Casos confirmados (acumulados) por barrios y/o zonas",
subtitle = "Ciudad Autónoma de Buenos Aires",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal()
Como se puede observar, el número de casos acumulados es mayor en zonas vulnerables. Por otro lado, hay zonas en las que la información estÔ incompleta ya que la fecha de inicio de los valores es posterior. ¿Por qué? No tengo respuestas a esa pregunta. Otra cosa llamativa es que hay zonas en la que los datos comienzan con valor 0 y otras que parten de valores (algunos elevados).
Ahora vamos a ver el porcentaje de positivos de entre 0 y 59 aƱos.
porcentaje_positivos_0_59 <- filter(reporte_covid, SUBTIPO_DATO == "%_positivos_entre_0_y_59_anos")
summary(porcentaje_positivos_0_59$VALOR)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 81.70 81.80 82.45 82.60 83.00 85.10
El promedio de personas contagiadas menores de 59 aƱos es de casi el ochenta y tres por ciento.
En esta sección vamos a ver la información relacionada con la ocupación de camas del sistema de salud en la ciudad. Filtramos:
reporte_covid_camas <- filter(reporte_covid, TIPO_DATO == "total_de_camas_sistema_publico")
camas_publicas <- filter(reporte_covid, TIPO_DATO == "ocupacion_de_camas_sistema_publico")
Los datos disponibles, al igual que en el punto anterior, comienzan el primero de julio, aunque los relacionados con camas para pacientes graves no cuentan con datos hasta agosto.
ggplot(camas_publicas, aes(x = FECHA, y = VALOR, color = SUBTIPO_DATO)) +
geom_line() +
geom_point() +
labs(title = "Ocupación de camas publicas",
subtitle = "CABA: COVID-19",
x = "",
y = "N",
caption = "fuente: data.buenosaires.gob.ar",
color = "Tipo de pacientes:") +
scale_color_viridis(discrete=TRUE) +
theme_minimal() +
theme(legend.position = "bottom")
Creamos un dataframe que contiene solo los datos sobre las camas para pacientes graves en CABA.
camas_publicas_graves <- filter(reporte_covid, SUBTIPO_DATO == "gaves_arm" |
SUBTIPO_DATO == "graves_no_arm" |
SUBTIPO_DATO == "graves_total" |
SUBTIPO_DATO == "graves")
En este grÔfico se puede ver cómo se da la evolución en números de camas ocupadas por pacientes graves con necesidad de asistencia respiratoria mecÔnica (arm), sin necesidad de arm y el total. Los datos que diferencian los casos en los que es necesaria la arm y en los que no estÔ disponible recién desde principios de agosto.
ggplot(camas_publicas_graves) +
geom_line(aes(x = FECHA, y = VALOR, color = SUBTIPO_DATO)) +
geom_point(aes(x = FECHA, y = VALOR, color = SUBTIPO_DATO)) +
labs(title = "Camas publicas: pacientes graves",
subtitle = "CABA - Covid-19",
x = "",
y = "N",
caption = "fuente: data.buenosaires.gob.ar",
color = "Camas:") +
scale_color_viridis(discrete=TRUE) +
theme_minimal() +
theme(legend.position = "bottom")
Ahora trabajamos los datos para poder calcular porcentajes de ocupación:
#filtramos datos sobre camas publicas para pacientes graves por el numero ocupacion total
camas_publicas_graves_total <- camas_publicas_graves %>% filter(SUBTIPO_DATO == "graves_total")
#filtramos datos sobre camas publicas para pacientes graves por el numero disponible
camas_publicas_graves_disponibles <- camas_publicas_graves %>% filter(SUBTIPO_DATO == "graves")
#filtramos datos sobre camas publicas para pacientes graves con arm
camas_publicas_graves_arm <- camas_publicas_graves %>% filter(SUBTIPO_DATO == "gaves_arm")
#filtramos datos sobre camas publicas para pacientes graves sin arm
camas_publicas_graves_no_arm <- camas_publicas_graves %>% filter(SUBTIPO_DATO == "graves_no_arm")
#creamos otro dataset con el numero de camas graves disponibles y usadas coincidente por fecha
ocupacion_camas <- inner_join(camas_publicas_graves_disponibles, camas_publicas_graves_total, by = "FECHA")
#calculamos el % de camas para pacientes graves ocupadas en CABA
ocupacion_camas <- ocupacion_camas %>% mutate(porcentaje_ocupacion = (VALOR.y*100)/VALOR.x)
#ahora agregamos los datos de ocupación de camas con arm
ocupacion_camas <- inner_join(ocupacion_camas, camas_publicas_graves_arm, by = "FECHA")
#calculamos el % de camas para pacientes graves con arm ocupadas en CABA
ocupacion_camas <- ocupacion_camas %>% mutate(porcentaje_ocupacion_arm = (VALOR*100)/VALOR.x)
#ahora agregamos los datos de ocupación de camas sin arm
ocupacion_camas <- inner_join(ocupacion_camas, camas_publicas_graves_no_arm, by = "FECHA")
#calculamos el % de camas para pacientes graves con arm ocupadas en CABA
ocupacion_camas <- ocupacion_camas %>% mutate(porcentaje_ocupacion_no_arm = (VALOR.y.y*100)/VALOR.x)
AcÔ podemos observar el % de ocupación de camas totales, arm y no arm en la ciudad.
ggplot(ocupacion_camas) +
geom_line(aes(x = FECHA, y = porcentaje_ocupacion, color = SUBTIPO_DATO.y)) +
geom_point(aes(x = FECHA, y = porcentaje_ocupacion, color = SUBTIPO_DATO.y)) +
geom_line(aes(x = FECHA, y = porcentaje_ocupacion_arm, color = SUBTIPO_DATO.x.x)) +
geom_point(aes(x = FECHA, y = porcentaje_ocupacion_arm, color = SUBTIPO_DATO.x.x)) +
geom_line(aes(x = FECHA, y = porcentaje_ocupacion_no_arm, color = SUBTIPO_DATO.y.y)) +
geom_point(aes(x = FECHA, y = porcentaje_ocupacion_no_arm, color = SUBTIPO_DATO.y.y)) +
ylim(0, 100) +
labs(title = "Porcentaje de ocupación: camas para pacientes graves",
subtitle = "CABA - Covid-19",
x = "",
y = "%",
color = "Camas:",
caption = "fuente: data.buenosaires.gob.ar") +
scale_color_viridis(discrete=TRUE) +
theme_minimal() +
theme(legend.position = "bottom")
total_casos_confirmados_barrios_vulnerables <- filter(reporte_covid, SUBTIPO_DATO == "total_confirmados")
ggplot(total_casos_confirmados_barrios_vulnerables, aes(x = FECHA, y = VALOR)) +
geom_line() +
geom_point() +
labs(title = "Casos confirmados acumulados en barrios vulnerables",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal() +
theme(legend.position = "bottom")
Ahora vamos a calcular el nĆŗmero de casos en confirmados por dĆa en barrios vulnerables. Para eso:
total_casos_confirmados_barrios_vulnerables <- total_casos_confirmados_barrios_vulnerables %>%
arrange(FECHA) %>%
mutate(VALOR_DIA = VALOR - lag(VALOR, default = first(VALOR)))
summary(total_casos_confirmados_barrios_vulnerables$VALOR_DIA)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 93.75 130.00 129.16 160.00 265.00
El promedio de casos por dĆa en barrios vulnerables es de 129 casos, mientras que el mĆ”ximo en un dĆa fue de 265.
Ahora graficamos:
ggplot(total_casos_confirmados_barrios_vulnerables, aes(x = FECHA, y = VALOR_DIA)) +
geom_line() +
geom_point() +
labs(title = "Casos confirmados acumulados en barrios vulnerables por dĆa",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar") +
theme_minimal() +
theme(legend.position = "bottom")
Los datos disponibles relacionados con personas fallecidas son: la edad promedio, el nĆŗmero acumulado y el diario.
edad_promedio_fallecidos <- filter(reporte_covid, SUBTIPO_DATO == "edad_promedio_de_fallecidos")
summary(edad_promedio_fallecidos$VALOR)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 75.30 75.60 76.10 75.99 76.30 76.40
Como se puede ver, la edad promedio de las personas fallecidas oscila entre los 75 y 76 años. Ahora vamos al número acumulado de personas fallecidas.
fallecidos_acumulados <- filter(reporte_covid, SUBTIPO_DATO == "fallecidos_acumulados")
fallecidos_dia <- filter(reporte_covid, SUBTIPO_DATO == "fallecidos_reportados_del_dia")
ggplot(fallecidos_dia, aes(x = FECHA, y = VALOR, fill = TIPO_DATO)) +
geom_col() +
labs(title = "Personas fallecidas por dĆa",
subtitle = "CABA - Covid-19",
x = "",
y = "",
caption = "fuente: data.buenosaires.gob.ar",
fill = "Corresponde a:") +
scale_fill_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom")
Ahora si vamos al porcentaje de personas fallecidas mayores de 60 aƱos:
porcentaje_fallecidos_mayores_60 <- filter(reporte_covid, SUBTIPO_DATO == "%_fallecidos_positivos_mayores_a_60_anos")
summary(porcentaje_fallecidos_mayores_60$VALOR)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 80.50 82.30 84.35 83.68 84.70 85.00